package midend.IR_Value;

import midend.IR_Type.IR_Const;
import midend.IR_Type.IR_Int32;
import midend.IR_Type.IR_Type;

public class IR_Int_Value extends IR_Value{
    private long Int_Value;
    private IR_Type Int_Type;
    private boolean is_const = false;

    //int需要在转IR的时候区分是 int32 还是 int1
    public IR_Int_Value(long value,IR_Type typ){
        this.Int_Value = value;
        this.Int_Type = typ;
    }

    public IR_Int_Value() {
    }

    public IR_Int_Value(int value){
        this.Int_Value = value;
    }

    public IR_Int_Value(int value,IR_Type int_Type,boolean is_const) {
        this.Int_Type = int_Type;
        this.Int_Value = value;
        this.is_const = is_const;
    }

    public int get_Int_Value() {
        return (int)Int_Value;
    }

    @Override
    public String get_ValueName() {
        return "" + Int_Value;
    }

    @Override
    public IR_Type get_Type() {
        return Int_Type;
    }

    @Override
    public int get_Const_Type() {
        if(this.Int_Type instanceof IR_Int32){
            return IR_Const.IR_ConstInt32;
        }
        return IR_Const.IR_ConstInt1;
    }

    @Override
    public String toString() {
        return  "Int_Value=" + Int_Value + ", Int_Type=" + Int_Type;
    }
}
